package com.example.chapter11;




/**
 * 11.2.3.函数式接口
 */
public class Main {

    //高阶函数
    @FunctionalInterface
    interface Function<T, R> {
        R apply(T t);
    }

    //实现高阶函数
    static <T, R> Function<T, R> higherOrderFunction(Function<T, R> function) {
        return input -> {
            // 在这里进行对传入函数的增强或者改变行为的操作
            // ...
            return function.apply(input);
        };
    }

    //使用高阶函数
    static int doubleNumber(int number) {
        return number * 2;
    }

    public static void main(String[] args) {
        Function<Integer, Integer> enhancedFunction = higherOrderFunction(Main::doubleNumber);
        int result = enhancedFunction.apply(5);
        System.out.println(result); // 输出：10
    }

}
